﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmCuentaBanco : Form
    {
        public frmCuentaBanco()
        {
            InitializeComponent();
        }
        CuentaBanco laCuentaBanco = new CuentaBanco();
        CuentaBancoBL laCuentaBancoBL = new CuentaBancoBL();
        EmpresaProvedorBL laEmpresaProvedorBL = new EmpresaProvedorBL();
        private CuentaBanco ObtenerObejto() {
            laCuentaBanco.NomBanco = cmbBanco.Text.ToUpper().Trim();
            laCuentaBanco.NroCuenta = txtNroCuenta.Text.Trim();
            laCuentaBanco.MonedaCuenta = cmbMoneda.Text.ToUpper().Trim();
            laCuentaBanco.LaEmpresaProvedor = Convert.ToInt32(lblEmpresaProvedorID.Text);
            return laCuentaBanco;
        }
        private Boolean guardarCuentaBanco() {
            CuentaBanco laCuentaBanco = ObtenerObejto();
            laCuentaBancoBL.guardarCuentaBanco(laCuentaBanco);
            return true;
        }
        private CuentaBanco ObtenerObjetoActualizar() {
            laCuentaBanco.CuentaBancoID = Convert.ToInt32(lblCuentaBancoID.Text);
            laCuentaBanco.NomBanco = cmbBanco.Text.ToUpper().Trim();
            laCuentaBanco.NroCuenta = txtNroCuenta.Text;
            laCuentaBanco.MonedaCuenta = cmbMoneda.Text.ToUpper().Trim();
            return laCuentaBanco;
        }
        private Boolean ActualizarCuentaBanco() {
            CuentaBanco laCuentaBanco = ObtenerObjetoActualizar();
            if (txtNroCuenta.Text == lblNroCuentaAnterior.Text) {
                laCuentaBancoBL.ActualizarCuentaBanco(laCuentaBanco, "---");
            }
            else if (txtNroCuenta.Text != lblNroCuentaAnterior.Text) {
                laCuentaBancoBL.ActualizarCuentaBanco(laCuentaBanco, txtNroCuenta.Text);
            }
            return true;
        }
        private void LlenarComboProvedor() {
            if (cmbListaProvedor.DataSource == null) {
                cmbListaProvedor.DataSource = laEmpresaProvedorBL.ObtenerListaProvedor();
                cmbListaProvedor.DisplayMember = "RazonSocial";
                cmbListaProvedor.ValueMember = "EmpresaProvedorID";
            }
        }
        private void LlenarDGVCuentas() {
            if (dgvListaCuentaPorProvedor.DataSource == null) {
                dgvListaCuentaPorProvedor.DataSource = laCuentaBancoBL.ObtenerListaBancoPorEmpresa(Convert.ToInt32(cmbListaProvedor.SelectedValue));
            }
        }
        private void LimpiarCampos() {
            cmbListaProvedor.Text = "";
            txtRazSoc.Text = "";            
            cmbBanco.Text = "";
            txtNroCuenta.Text = "";
            cmbMoneda.Text = "";
            lblCuentaBancoID.Text = "";
            lblNroCuentaAnterior.Text = "";
            lblEmpresaProvedorID.Text = "";
            cmbListaProvedor.Select();
        }
        private void rbNuevoCuenta_CheckedChanged(object sender, EventArgs e)
        {
            if (rbNuevoCuenta.Checked == true)
            {
                dgvListaCuentaPorProvedor.DataSource = null;
                cmbListaProvedor.DataSource = null;
                LlenarComboProvedor();
                LimpiarCampos();
                btnNuevoProv.Enabled = true;
            }
            else {
                btnNuevoProv.Enabled = false;
            }
        }

        private void rbUpdateCuenta_CheckedChanged(object sender, EventArgs e)
        {
            if (rbUpdateCuenta.Checked == true)
            {                
                LlenarComboProvedor();
                LimpiarCampos();
                btnUpdateProv.Enabled = true;
            }
            else {
                btnUpdateProv.Enabled = false;
            }
        }

        private void frmCuentaBanco_Load(object sender, EventArgs e)
        {
            rbNuevoCuenta.Checked = true;
        }
        private void cmbListaProvedor_SelectedIndexChanged(object sender, EventArgs e)
        {
            dgvListaCuentaPorProvedor.DataSource = null;
            if (rbNuevoCuenta.Checked == true)
            {
                txtRazSoc.Text = cmbListaProvedor.Text;
                lblEmpresaProvedorID.Text = Convert.ToString(cmbListaProvedor.SelectedValue);
            }
            if (rbUpdateCuenta.Checked == true)
            {
                LlenarDGVCuentas();
                txtRazSoc.Text = cmbListaProvedor.Text;
                lblEmpresaProvedorID.Text = Convert.ToString(cmbListaProvedor.SelectedValue);
            }
        }
        private void cmbListaProvedor_KeyUp(object sender, KeyEventArgs e)
        {
            dgvListaCuentaPorProvedor.DataSource = null;
            if (rbNuevoCuenta.Checked == true)
            {
                txtRazSoc.Text = cmbListaProvedor.Text;
                lblEmpresaProvedorID.Text = Convert.ToString(cmbListaProvedor.SelectedValue);
            }
            if (rbUpdateCuenta.Checked == true)
            {
                LlenarDGVCuentas();
                txtRazSoc.Text = cmbListaProvedor.Text;
                lblEmpresaProvedorID.Text = Convert.ToString(cmbListaProvedor.SelectedValue);
            }
        }

        private void dgvListaCuentaPorProvedor_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int nroFila = Int32.Parse(e.RowIndex.ToString());
                cmbBanco.Text = Convert.ToString(dgvListaCuentaPorProvedor["Banco", nroFila].Value);
                txtNroCuenta.Text = Convert.ToString(dgvListaCuentaPorProvedor["NroCuenta", nroFila].Value);
                lblNroCuentaAnterior.Text = Convert.ToString(dgvListaCuentaPorProvedor["NroCuenta", nroFila].Value);
                cmbMoneda.Text = Convert.ToString(dgvListaCuentaPorProvedor["Moneda", nroFila].Value);
                lblCuentaBancoID.Text = Convert.ToString(dgvListaCuentaPorProvedor["CuantaBancoID", nroFila].Value);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevoProv_Click(object sender, EventArgs e)
        {
            try
            {
                guardarCuentaBanco();
                if (MessageBox.Show("Desea Registrar otra cuenta", "CUENTA PROVEDOR", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    cmbBanco.Select();
                    txtNroCuenta.Text = "";
                    cmbMoneda.Text = "";
                }
                else
                {
                    MessageBox.Show("Provedor : " + txtRazSoc.Text + "\nCuenta : " + txtNroCuenta.Text + "\nREGISTRADO CORRECTAMENTE");
                    LimpiarCampos();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnUpdateProv_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarCuentaBanco();
                MessageBox.Show("Provedor : " + txtRazSoc.Text + "\nCuenta : " + txtNroCuenta.Text + "\nACTUALIZADO CORRECTAMENTE");
                LimpiarCampos();
                rbNuevoCuenta.Checked = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelarProv_Click(object sender, EventArgs e)
        {
            this.Close();
        }        
    }
}
